home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Commodities / Flusher / flusher.p < prev   
Text File  |  1996-09-26  |  4KB  |  162 lines

  1. PROGRAM Flusher;
  2.  
  3. { Kleiner Quickhack zum Flushen von
  4.   Commodities
  5.   
  6.   (C) 1995 by Björn Schotte
  7.   
  8.   Weiterentwicklung/Neuschreibung des Programms
  9.   FlushCX von Jan Stötzer!
  10.   
  11.   Grund: Vermisste ein File, in dem Commodities
  12.   eingetragen werden, die NICHT gekillt werden
  13.   sollen.
  14.  
  15.   
  16.   ----------------- Disclaimer ----------------  
  17.   This Program is PUBLIC DOMAIN. Do with it
  18.   whatever you want to do...
  19.   
  20.   The Author is not responsible for any damages
  21.   this program makes on your computer!!
  22.   ---------------------------------------------
  23.   
  24.   Address:
  25.   
  26.     (Please include return postage!)
  27.           
  28.     Björn Schotte
  29.     Am Burkardstuhl 45
  30.     D-97267 Himmelstadt
  31.     GERMANY
  32.          
  33.   EMail:
  34.   
  35.     bombersoft@bomber.mayn.sub.de                }
  36.  
  37. {$opt q}
  38. USES ExecSupport;
  39.  
  40. {$incl "commodities.lib",
  41.             "dos.lib"}
  42.         
  43. CONST
  44.   rev = "$VER: Flusher V1.00 (25.05.1995)";
  45.   MAXNAMES = 30;
  46.   ExceptFile = "ENVARC:Flusher.dat";
  47.  
  48. TYPE p_BrokerCopy = ^BrokerCopy;
  49.      BrokerCopy = RECORD
  50.                     bc_Node : Node;
  51.                     bc_Name : string[CBD_NAMELEN];
  52.                     bc_Title: string[CBD_TITLELEN];
  53.                     bc_Descr: string[CBD_DESCRLEN];
  54.                     bc_Task,bc_Dummy1,bc_Dummy2 : long;
  55.                     bc_Flags: word;
  56.                   END;
  57.   
  58. VAR
  59.   BrokerL : p_List;
  60.   copied,
  61.   anz,i,
  62.   flushed : LONG;
  63.   n       : p_Node;
  64.   cop     : p_BrokerCopy;
  65.   f       : Text;
  66.   names   : ARRAY[1..MAXNAMES] OF STRING;
  67.   found   : BOOLEAN;
  68.  
  69. LIBRARY CxBase:
  70. -186 : FUNCTION  CopyBrokerList(A0:p_List):long;
  71. -192 : FUNCTION  FreeBrokerList(A0:p_List):long;
  72. -198 : PROCEDURE BrokerCommand(A0:str;D0:long);
  73. END;
  74.  
  75. PROCEDURE ReadInFile;
  76. BEGIN
  77.   anz := 0;
  78.   Reset(f,ExceptFile);
  79.   IF IOResult = 0 THEN
  80.   BEGIN
  81.          WHILE NOT EOF(f) DO
  82.          BEGIN
  83.                 Inc(anz);
  84.                 ReadLn(f, names[anz]);
  85.          END;
  86.          Close(f);
  87.   END;
  88. END;
  89.  
  90. { Sauberes Verlassen des Programms. }
  91. PROCEDURE CleanUp(why:STRING;rc:INTEGER);
  92. BEGIN
  93.   IF CXBase <> NIL THEN CloseLibrary(CXBase);
  94.   IF why <> "" THEN Writeln(why);
  95.   DosExit(rc);
  96. END;
  97.  
  98. { Öffnen der Library }
  99. PROCEDURE OpenLibs;
  100. BEGIN
  101.   CXBase := OpenLibrary("commodities.library", 37);
  102.   IF CXBase = NIL THEN CleanUp("Couldn`t open commodities.library!",20);
  103. END;
  104.  
  105. PROCEDURE InitBrokerL;
  106. BEGIN
  107.   BrokerL := PTR(AllocVec(SizeOf(List),MEMF_ANY+MEMF_CLEAR));
  108.   IF BrokerL = NIL THEN CleanUp("Not enough memory free!",20);
  109.   NewList(BrokerL);
  110.   copied := CopyBrokerList(BrokerL);
  111. END;
  112.  
  113. PROCEDURE FlushBrokers;
  114. LABEL weiter;
  115. BEGIN
  116.   n := BrokerL^.lh_head;
  117.   REPEAT
  118.     cop := p_BrokerCopy(PTR(n));
  119.          IF anz > 0 THEN
  120.          BEGIN
  121.                 FOR i := 1 TO anz DO
  122.                 BEGIN
  123.                   found := FALSE;
  124.                   IF cop^.bc_Name = names[i] THEN
  125.                   BEGIN
  126.                          found := TRUE;
  127.                          GOTO weiter;
  128.                   END{ ELSE IF names[i] = "" THEN found := TRUE}
  129.                   ELSE found := FALSE;
  130.            END;
  131. weiter:
  132.                 IF found = FALSE THEN
  133.                 BEGIN
  134.                   BrokerCommand(cop^.bc_name,CXCMD_KILL);
  135.                   Inc(flushed);
  136.                 END;
  137.          END ELSE
  138.          BEGIN
  139.            BrokerCommand(cop^.bc_Name,CXCMD_KILL);
  140.                 Inc(flushed);
  141.          END;
  142.     n := n^.ln_succ;
  143.   UNTIL n = NIL;
  144.   copied := FreeBrokerList(BrokerL);
  145.   FreeVec(BrokerL);
  146. END;
  147.  
  148. BEGIN
  149.   IF FromWB THEN HALT(20);
  150.   Writeln("Flusher V1.00  (C) 1995 by Björn Schotte -=- PUBLIC DOMAIN");
  151.   Writeln;
  152.   CXBase := NIL;
  153.   BrokerL := NIL;
  154.   flushed := 0;
  155.   OpenLibs;
  156.   InitBrokerL;
  157.   ReadInFile;
  158.   FlushBrokers;
  159.   Writeln(flushed:2," Commodities killed...");
  160.   CleanUp("",0);
  161. END.
  162.